/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.rcn.domain;

import java.util.List;
import java.util.Set;
import javax.persistence.*;
import org.hibernate.annotations.ForeignKey;

/**
 *
 * @author Valen
 */
@Entity
@Table (name="tratamiento",uniqueConstraints = {@UniqueConstraint(columnNames={"idTratamiento"})})
public class Tratamiento {
    
    private String diagnostico; //diagnostico que realizo el medico que derivo
    private Medico medico; //medico que derivo al paciente a realizar este tratamiento
    private Paciente paciente; //paciente bajo tratamiento
    private Boolean activo; //true si el tratamiento esta en curso, false si ya finalizo o se cancelo.
    private long id;
    private List<Sesion> sesiones;
    
    /**
     * @return the Diagnostico
     */
    @Basic
    @Column(name = "diagnostico")
    public String getDiagnostico() {
        return diagnostico;
    }

    /**
     * @param Diagnostico the Diagnostico to set
     */
    public void setDiagnostico(String Diagnostico) {
        this.diagnostico = Diagnostico;
    }

    /**
     * @return the medico
     */
    @ManyToOne(cascade = CascadeType.ALL, optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "medico")
    public Medico getMedico() {
        return medico;
    }

    /**
     * @param medico the medico to set
     */
    public void setMedico(Medico medico) {
        this.medico = medico;
    }

    /**
     * @return the paciente
     */
    @ManyToOne(cascade = CascadeType.ALL, optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "paciente")
    public Paciente getPaciente() {
        return paciente;
    }

    /**
     * @param paciente the paciente to set
     */
    public void setPaciente(Paciente paciente) {
        this.paciente = paciente;
    }

    /**
     * @return the id
     */
    @Id
    @GeneratedValue
    @Column(name = "idTratamiento")
    public long getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(long id) {
        this.id = id;
    }

    /**
     * @return the activo
     */
    @Basic
    @Column(name = "activo")
    public Boolean getActivo() {
        return activo;
    }

    /**
     * @param activo the activo to set
     */
    public void setActivo(Boolean activo) {
        this.activo = activo;
    }

    /**
     * @return the sesiones
     */
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name="idTratamiento")
    public List<Sesion> getSesiones() {
        return sesiones;
    }

    /**
     * @param sesiones the sesiones to set
     */
    public void setSesiones(List<Sesion> sesiones) {
        this.sesiones = sesiones;
    }
    
    public void borrarSesion(Long idSesion){
        Sesion s = new Sesion();
        s.setId(idSesion);
        this.getSesiones().remove(s);
    }
}
